///////////////////////////////////////////////////////////////////////////
///gflags是Google提供的一个开源库，用于C++应用程序中命令行参数的生命、定义、解析
///////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////
///安装：sudo apt-get install libgflags-dev
///////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////
//使用
///////////////////////////////////////////////////////////////////////////

#pragma once
#include <gflags/gflags.h>
#include <iostream>
//定义参数  类型(变量名,默认值,帮助信息)
DEFINE_bool(EnableFile,false,"input error in file?");
DEFINE_string(Addr,"127.0.0.1","your target ip?");
//引用外部的参数(如果有),假设EnableFile是外部变量
//DECLARE_bool(EnableFile)

//类型
// DEFINE_bool
// DEFINE_int32
// DEFINE_int64
// DEFINE_uint64
// DEFINE_double
// DEFINE_string

// //特殊参数
// --help                         # 显示文件中所有标识的帮助信息
// --helpfull                     # 和-help 一样, 帮助信息更全面一些
// --helpshort                    # 只显示当前执行文件里的标志
// --helpxml                      # 以 xml 方式打印，方便处理
// --version                      # 打印版本信息，由 google::SetVersionString()设定
// --flagfile=f 或者 -flagfile=f  #从文件 f 中读取命令行参数

int main(int argc,char *argv[])
{
    std::cout<<FLAGS_EnableFile<<std::endl;
    std::cout<<FLAGS_Addr<<std::endl;

    //使自定义的参数生效,
    google::ParseCommandLineFlags(&argc,&argv,true);
    
    std::cout<<FLAGS_EnableFile<<std::endl;
    std::cout<<FLAGS_Addr<<std::endl;
    
    return 0;
}